package com.ccl.iot.publics;

public class Debugger {
    //	public static final boolean KDEBUG = android.os.Build.SERIAL.equals("3234BE115AF600EC") || android.os.Debug.isDebuggerConnected();
    public static final boolean KDEBUG = true;

    private static final String KDEBUGGER_CLASS_NAME = Debugger.class.getCanonicalName();

    public static String GetStackFunctionName() {
        StackTraceElement tElement[] = Thread.currentThread().getStackTrace();

        if (tElement != null && tElement.length > 2) {
            int i;

            for (i = 2; i < tElement.length; i++) {
                if (KDEBUGGER_CLASS_NAME.equals(tElement[i].getClassName()) == false) {
                    break;
                }
            }

            String tClass[] = tElement[i].getClassName().split("\\.");

            return tClass[tClass.length - 1] + "." + tElement[i].getMethodName();
        } else {
            return Debugger.class.getSimpleName();
        }
    }

    public static String GetStackFunctionNames() {
        StackTraceElement tElement[] = Thread.currentThread().getStackTrace();

        StringBuffer sb = new StringBuffer();

        if (tElement != null && tElement.length > 0) {
            for (int i = tElement.length - 1; i >= 0; i--) {
                sb.append(tElement[i].getClassName()).append(".").append(tElement[i].getMethodName()).append("---\n");
            }
        }
        return sb.toString();
    }

    public static String GetStringMsg(Object aMsg) {
        String tMsg = null;

        if (aMsg instanceof String) {
            tMsg = (String) aMsg;
        } else {
            tMsg = String.valueOf(aMsg);
        }
        return tMsg;
    }

    public static void Error(Object aMsg) {
        if (KDEBUG) {
            android.util.Log.e(GetStackFunctionName(), GetStringMsg(aMsg));
        }
    }

    public static void Warning(Object aMsg) {
        if (KDEBUG) {
            android.util.Log.w(GetStackFunctionName(), GetStringMsg(aMsg));
        }
    }

    public static void Debug(Object aMsg) {
        if (KDEBUG) {
            //			android.util.Log.d(GetStackFunctionName(), GetStringMsg(aMsg));
            android.util.Log.e(GetStackFunctionName(), GetStringMsg(aMsg));
        }
    }

    public static void Print(Object aMsg) {
        if (KDEBUG) {
            android.util.Log.v(GetStackFunctionName(), GetStringMsg(aMsg));
        }
    }

    public static void Information(Object aMsg) {
        if (KDEBUG) {
            android.util.Log.i(GetStackFunctionName(), GetStringMsg(aMsg));
        }
    }

    public static void Print(Object aMsg, String aRegular) {
        if (KDEBUG) {
            String tMsg = GetStringMsg(aMsg);
            String tMsgs[];

            if ((tMsgs = tMsg.split(aRegular)) != null) {
                for (int i = 0; i < tMsgs.length; i++) {
                    Print(tMsgs[i]);
                }
            }
        }
    }

    public static void Print(String aDelimiter, Object... aMsg) {
        if (KDEBUG) {
            String tMsg = null;

            if (aMsg != null && aMsg.length > 0) {
                for (int i = 0; i < aMsg.length; i++) {
                    String tTemp = GetStringMsg(aMsg[i]);

                    if (tMsg == null) {
                        tMsg = tTemp;
                    } else {
                        tMsg += aDelimiter + tTemp;
                    }
                }
            }

            Print(tMsg);
        }
    }
}
